package com.dcits.account.util;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

/**
 * @Auther: 2843896844@qq.com
 * @Date: 2021/06/11/13:49
 * @Description:
 */
public class DateUtil {

    /**
     * 根据指定日期格式获取今日
     *
     * @return 今日
     */
    public static String getToday(String format) {
        LocalDate date = LocalDate.now();
        return DateTimeFormatter.ofPattern(format).format(date);
    }

    /**
     * 根据指定日期格式获取昨日
     *
     * @param format 日期格式
     * @return 昨日
     */
    public static String getYesterday(String format) {
        LocalDate date = LocalDate.now().minusDays(1);
        return DateTimeFormatter.ofPattern(format).format(date);
    }

    /**
     * 获取系统时间
     *
     * @return
     * @author gucl
     */
    public static Timestamp getSysDate() {
        return new Timestamp(System.currentTimeMillis());
    }

    /**
     * 获取指定时间的偏移秒后的时间
     *
     * @param sysDate
     * @param offsetSeconds
     * @return
     */
    public static Timestamp getOffsetSecond(Date sysDate, int offsetSeconds) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sysDate);
        calendar.add(Calendar.SECOND, offsetSeconds);
        return new Timestamp(calendar.getTimeInMillis());
    }

    /**
     * 时间戳
     *
     * @return 时间戳，字符串，yyyyMMddHHmmss
     */
    public static String getyyyyMMddHHmmss() {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String dateNowStr = sdf.format(d);
        return dateNowStr;
    }

    /**
     * 时间戳
     *
     * @return 时间戳，字符串，yyyyMMdd
     */
    public static String getyyyyMMdd() {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateNowStr = sdf.format(d);
        return dateNowStr;
    }

    public static String getyyyyMMddByDate(Date d) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateNowStr = sdf.format(d);
        return dateNowStr;
    }

    /**
     * 获取距离当前时间前后的日期，比如：-1昨天，0今天，1明天
     *
     * @param num
     * @return
     */
    public static Date getDate(int num) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, num);
        return calendar.getTime();
    }

    /**
     * 日期转字符串
     *
     * @param date
     * @param format
     * @return
     */
    public static String getDateStr(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
}
